unit uLivroSaida_Premiatta;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Formulario_Padrao_Rel, StdCtrls, Mask, ToolEdit, RDprint,
  ExtCtrls, CheckLst, ComCtrls, TFlatButtonUnit, Buttons, dbtables, RXCtrls;

type
  TfrmImp_LivroSaidaPremiatta = class(TFrmPad_Rel)
    GroupBox1: TGroupBox;
    Label3: TLabel;
    Label5: TLabel;
    ed_dataini: TDateEdit;
    ed_datafim: TDateEdit;
    edDiretorio: TDirectoryEdit;
    RxLabel1: TRxLabel;
    pb: TProgressBar;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure bimprimirClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure btncancelarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmImp_LivroSaidaPremiatta: TfrmImp_LivroSaidaPremiatta;

implementation

uses clsBackupVenda, clsEndereco, clsEntidade, clsCidade, Dm, Biblio;

var
  Entidade: TEntidade;
  Endereco: TEndereco;
  Cidade: TCidade;

{$R *.dfm}

procedure TfrmImp_LivroSaidaPremiatta.FormCreate(Sender: TObject);
begin
  inherited;
  Entidade := TEntidade.Create;
  Endereco := TEndereco.Create;
  Cidade := TCidade.Create;
end;

procedure TfrmImp_LivroSaidaPremiatta.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  Entidade.Free;
  Endereco.Free;
  Cidade.Free;
end;

procedure TfrmImp_LivroSaidaPremiatta.bimprimirClick(Sender: TObject);
var
  tq: TQuery;
  i: Integer;
  empresas: string;
  Arquivo: TextFile;
  linha: string;
begin
  inherited;
  empresas := '';
  for i := 0 to ListaEmp.Items.Count - 1 do begin
    if ListaEmp.Checked[i] then begin
      if empresas = '' then
        empresas := char(39) + copy(ListaEmp.Items.Strings[i], 1, 3) + char(39)
      else
        empresas := empresas + ',' + char(39) + copy(ListaEmp.Items.Strings[i], 1, 3) + char(39);
    end; //fim if ListaEmp
  end; //fim for

  tq := TQuery.Create(self);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Close;
  tq.Params.Clear;
  tq.SQL.Clear;
  tq.SQL.Add('Select distinct bkp_numero, n.nota_serie, n.ent_codigo, ' +
    'NOTV_DATAFAT, sum(notv_aliqicms) notv_aliqicms, sum(NOTV_BCALIPI) NOTV_BCALIPI, ' +
    'sum(NOTV_BCALICMS) NOTV_BCALICMS, sum(NOTV_IPI) NOTV_IPI, ' +
    'sum(NOTV_ICMS) NOTV_ICMS, sum(NOTV_OUTRASIPI) NOTV_OUTRASIPI, ' +
    'sum(NOTV_OUTRASICMS) NOTV_OUTRASICMS, sum(NOTV_VALORCONTABIL) Total, CODF_CODIGO ' +
    'from NotaVenda n, Backup_Venda b ' +
    'where (b.Nota_Numero = n.Nota_Numero) and Emp_Codigo in (' + empresas + ') ' +
    'and NOTV_DATAFAT >=:dtI and NOTV_DATAFAT <=:dtF and (n.canp_codigo is null or n.canp_codigo=:par1)' +
    'group by bkp_numero, n.nota_serie, n.ent_codigo, ' +
    'NOTV_DATAFAT, CODF_CODIGO ' +
    'order by bkp_numero ');
  tq.ParamByName('dtI').AsDateTime := ed_dataini.Date;
  tq.ParamByName('dtF').AsDateTime := ed_datafim.Date;
  tq.ParamByName('par1').Asstring := '';
  tq.Open;
  pb.Position := 0;
  pb.Max := tq.RecordCount;
  AssignFile(Arquivo, edDiretorio.Text + 'LIVRO.txt');
  Rewrite(Arquivo);
  while not tq.Eof do begin
    pb.Position := pb.Position + 1;
    Entidade.Recuperar(tq.FieldByName('Ent_Codigo').AsString);
    Endereco.Recuperar_primeiro(tq.FieldByName('Ent_Codigo').AsString);
    Cidade.Recuperar(Endereco.Cid_Codigo);
    linha := '';
    linha := linha + copy(tq.FieldByName('bkp_numero').AsString, 4, 6);
    linha := linha + repl(' ', 3);
    linha := linha + copy(tq.FieldByName('nota_serie').AsString + '   ', 1, 3);
    linha := linha + 'NF   ';
    linha := linha + copy(tq.FieldByName('NOTV_DATAFAT').AsString, 1, 2);
    linha := linha + repl('0', 17);
    linha := linha + StrZero(iv(tq.FieldByName('notv_aliqicms').AsFloat * 100), 5);
    linha := linha + StrZero(iv(tq.FieldByName('notv_bcalipi').AsFloat * 100), 15);
    linha := linha + StrZero(iv(tq.FieldByName('notv_bcalicms').AsFloat * 100), 15);
    linha := linha + StrZero(iv(tq.FieldByName('notv_ipi').AsFloat * 100), 14);
    linha := linha + StrZero(iv(tq.FieldByName('notv_icms').AsFloat * 100), 14);
    linha := linha + StrZero(iv(tq.FieldByName('notv_outrasipi').AsFloat * 100), 15);
    linha := linha + StrZero(iv(tq.FieldByName('notv_outrasicms').AsFloat * 100), 15);
    linha := linha + StrZero(iv(tq.FieldByName('total').AsFloat * 100), 15);
    linha := linha + copy(Cidade.Cid_est_sigla + '  ', 1, 2);
    linha := linha + copy(Entidade.Ent_Cnpj + repl(' ', 14), 1, 14);
    linha := linha + copy(Entidade.Ent_Inscest + repl(' ', 15), 1, 15);
    linha := linha + '   ';
    linha := linha + copy(Entidade.Cod_Entidade + '-' + Entidade.Ent_Nome + repl(' ', 40), 1, 40);
    linha := linha + '01';
    linha := linha + tira_PT(tq.FieldByName('Codf_Codigo').AsString);
    Writeln(Arquivo, linha);
    tq.Next;
  end;
  CloseFile(Arquivo);
  Application.MessageBox('Arquivo gerado com sucesso!', 'Industrial');
  FormActivate(sender);
  tq.Close;
  tq.Free;
end;

procedure TfrmImp_LivroSaidaPremiatta.FormActivate(Sender: TObject);
begin
  inherited;
  ed_dataini.Clear;
  ed_datafim.Clear;
  ListaEmp.SetFocus;
  pb.Position := 0;
end;

procedure TfrmImp_LivroSaidaPremiatta.btncancelarClick(Sender: TObject);
begin
  inherited;
  FormActivate(sender);
end;

end.
